package com.dkd.day20250717;

import java.util.*;

public class Main23 {
    public static void main(String[] args) {
        //给定一个由纯数字组成以字符串表示的数值，现要求字符串中的每个数字最多只能出现2次，超过的需要进行删除；
        //
        //删除某个重复的数字后，其它数字相对位置保持不变。
        //
        //如”34533″，数字3重复超过2次，需要删除其中一个3，删除第一个3后获得最大数值”4533″
        //
        //请返回经过删除操作后的最大的数值，以字符串表示。
        //
        //输入描述
        //第一行为一个纯数字组成的字符串，长度范围：[1,100000]
        //
        //输出描述
        //输出经过删除操作后的最大的数值
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        solve(s);
    }

    public static void solve(String s) {
        HashMap<Character, Integer> canuse = new HashMap<>();
        HashMap<Character, Integer> retain = new HashMap<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            canuse.put(c, canuse.getOrDefault(c, 0) + 1);
            retain.putIfAbsent(c, 0);
        }
        LinkedList<Character> stack = new LinkedList<>();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            //判断是否两个
            if (retain.get(c) == 2) {
                canuse.put(c, canuse.get(c) - 1);
                continue;
            }

            while(stack.size()>0) {
                char top = stack.getLast();
                if (top< c && canuse.get(top)+ retain.get(top)-1 >=2) {
                    stack.removeLast();
                    retain.put(top, retain.get(top)-1);
                }else{
                    break;
                }
            }
            stack.addLast(c);
            canuse.put(c, canuse.get(c)-1);
            retain.put(c, retain.get(c)+1);

        }

        //打印
        StringBuilder sb = new StringBuilder();
        while (!stack.isEmpty()) {
            sb.append(stack.removeFirst());
        }
        System.out.println(sb.toString());
    }
}
